#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
//int main()
//{
//	int n;
//	cin >> n;
//	long long int arr[11000] = { 0 };
//	int sum = 0;
//	for (int i = 0; i <min(n,30); i++)
//	{
//		cin >> arr[i];
//	}
//	if (arr[0] != arr[1])
//	{
//		if (arr[2] == 2 * arr[0])
//			arr[1] = arr[0];
//		else if (arr[2] == 2 * arr[1])
//			arr[0] = arr[1];
//		else
//			arr[1] = arr[0];
//		sum++;
//	}
//	for (int i = 2; i < min(n,30); i++)
//	{
//		if (arr[i] == arr[i - 1] + arr[i - 2])
//		{
//			continue;
//		}
//		else
//		{
//			sum++;
//			arr[i] = arr[i - 1] + arr[i - 2];
//		}
//	}
//	cout << sum+(n-30) << endl;
//	return 0;
//}

int main()
{
	int n;
	cin >> n;
	long long int arr[10006];
	long long int f[10006];

	for (int i = 0; i < min(30, n); i++)
	{
		cin >> arr[i];
	}
	f[0] = 1;
	f[1] = 1;
	for (int i = 2; i < min(30, n); i++)
	{
		f[i] = f[i - 1] + f[i - 2];
	}
	int max1 = 1e6;
	int ret=1e6;
	for (int i = 1; i <= max1; ++i) {
		int cnt = 0;
		for (int j = 0; j < min(n, 30); ++j) cnt += (arr[j] != i * f[j]);
		ret = min(ret, cnt);
	}
	cout << ret+max(0,n-30) << endl;
	return 0;
}